{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用pdfminer解析pdf文件，并提取表格，https://github.com/pdfminer/pdfminer.six.git"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pdfminer.high_level import extract_pages\n",
    "from pdfminer.layout import LTTextContainer, LTTextLine, LTTextBox, LTChar\n",
    "\n",
    "# 1.读取pdf\n",
    "file = '../佳讯飞鸿：2022年年度报告/佳讯飞鸿：2022年年度报告_107-113.pdf'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "提取文本"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7、合并所有者权益变动表 \n",
      "\n",
      "本期金额 \n",
      "\n",
      "北京佳讯飞鸿电气股份有限公司 2022 年年度报告全文 \n",
      "\n",
      "单位：元 \n",
      "\n",
      "2022 年度 \n",
      "\n",
      "归属于母公司所有者权益 \n",
      "\n",
      "项目 \n",
      "\n",
      "股本 \n",
      "\n",
      "其他权益工具 \n",
      "\n",
      "优\n",
      "先\n",
      "股 \n",
      "\n",
      "永\n",
      "续\n",
      "债 \n",
      "\n",
      "其\n",
      "他 \n",
      "\n",
      "资本公\n",
      "积 \n",
      "\n",
      "减：库\n",
      "存股 \n",
      "\n",
      "其他综合\n",
      "收益 \n",
      "\n",
      "专项\n",
      "储备 \n",
      "\n",
      "盈余公\n",
      "积 \n",
      "\n",
      "一般\n",
      "风险\n",
      "准备 \n",
      "\n",
      "未分配利\n",
      "润 \n",
      "\n",
      "其\n",
      "他 \n",
      "\n",
      "小计 \n",
      "\n",
      "少数股东\n",
      "权益 \n",
      "\n",
      "所有者权益\n",
      "合计 \n",
      "\n",
      "一、上年期末余额 \n",
      "\n",
      "593,718,564.00 \n",
      "\n",
      "751,246,676.86 \n",
      "\n",
      "82,145,274.15 \n",
      "\n",
      "-26,873,547.89 \n",
      "\n",
      "73,664,602.84 \n",
      "\n",
      "867,106,782.40 \n",
      "\n",
      "2,176,717,804.06 \n",
      "\n",
      "4,397,818.45 \n",
      "\n",
      "2,181,115,622.51 \n",
      "\n",
      "更 \n",
      "\n",
      "正 \n",
      "\n",
      "加：会计政策变\n",
      "\n",
      "前期差错更\n",
      "\n",
      "同一控制下\n",
      "\n",
      "企业合并 \n",
      "\n",
      "其他 \n",
      "\n",
      "二、本年期初余额 \n",
      "\n",
      "593,718,564.00 \n",
      "\n",
      "751,246,676.86 \n",
      "\n",
      "82,145,274.15 \n",
      "\n",
      "-26,873,547.89 \n",
      "\n",
      "73,664,602.84 \n",
      "\n",
      "867,106,782.40 \n",
      "\n",
      "2,176,717,804.06 \n",
      "\n",
      "4,397,818.45 \n",
      "\n",
      "2,181,115,622.51 \n",
      "\n",
      "三、本期增减变动金\n",
      "额（减少以“－”号填\n",
      "列） \n",
      "\n",
      "（一）综合收益总额 \n",
      "\n",
      "（二）所有者投入和\n",
      "减少资本 \n",
      "\n",
      "1．所有者投入的普通\n",
      "股 \n",
      "\n",
      "2．其他权益工具持有\n",
      "者投入资本 \n",
      "\n",
      "3．股份支付计入所有\n",
      "者权益的金额 \n",
      "\n",
      "4．其他 \n",
      "\n",
      "-39,683,075.69 \n",
      "\n",
      "-74,969,932.15 \n",
      "\n",
      "-3,105,220.32 \n",
      "\n",
      "3,390,969.21 \n",
      "\n",
      "20,340,059.67 \n",
      "\n",
      "55,912,665.02 \n",
      "\n",
      "-349,246.31 \n",
      "\n",
      "55,563,418.71 \n",
      "\n",
      "-12,602,729.17 \n",
      "\n",
      "62,318,270.28 \n",
      "\n",
      "49,715,541.11 \n",
      "\n",
      "-1,299,246.31 \n",
      "\n",
      "48,416,294.80 \n",
      "\n",
      "6,691,136.98 \n",
      "\n",
      "6,691,136.98 \n",
      "\n",
      "107 \n",
      "\n",
      "6,691,136.98 \n",
      "\n",
      "950,000.00 \n",
      "\n",
      "7,641,136.98 \n",
      "\n",
      "950,000.00 \n",
      "\n",
      "950,000.00 \n",
      "\n",
      "6,691,136.98 \n",
      "\n",
      "6,691,136.98 \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      "7,175,342.00 \n",
      "\n",
      "7,175,342.00 \n",
      "\n",
      "北京佳讯飞鸿电气股份有限公司 2022 年年度报告全文 \n",
      "\n",
      "4,340,720.09 \n",
      "\n",
      "4,340,720.09 \n",
      "\n",
      "-33,430,452.64 \n",
      "\n",
      "-4,340,720.09 \n",
      "\n",
      "-36,265,074.55 \n",
      "\n",
      "-36,265,074.55 \n",
      "\n",
      "-29,089,732.55 \n",
      "\n",
      "-36,265,074.55 \n",
      "\n",
      "-36,265,074.55 \n",
      "\n",
      "-46,374,212.67 \n",
      "\n",
      "-82,145,274.15 \n",
      "\n",
      "9,497,508.85 \n",
      "\n",
      "-949,750.88 \n",
      "\n",
      "-8,547,757.97 \n",
      "\n",
      "35,771,061.48 \n",
      "\n",
      "35,771,061.48 \n",
      "\n",
      "9,497,508.85 \n",
      "\n",
      "-949,750.88 \n",
      "\n",
      "-8,547,757.97 \n",
      "\n",
      "-46,374,212.67 \n",
      "\n",
      "-82,145,274.15 \n",
      "\n",
      "35,771,061.48 \n",
      "\n",
      "35,771,061.48 \n",
      "\n",
      "（三）利润分配 \n",
      "\n",
      "1．提取盈余公积 \n",
      "\n",
      "2．提取一般风险准备 \n",
      "\n",
      "3．对所有者（或股\n",
      "东）的分配 \n",
      "\n",
      "4．其他 \n",
      "\n",
      "（四）所有者权益内\n",
      "部结转 \n",
      "\n",
      "1．资本公积转增资本\n",
      "（或股本） \n",
      "\n",
      "2．盈余公积转增资本\n",
      "（或股本） \n",
      "\n",
      "3．盈余公积弥补亏损 \n",
      "\n",
      "4．设定受益计划变动\n",
      "额结转留存收益 \n",
      "\n",
      "5．其他综合收益结转\n",
      "留存收益 \n",
      "\n",
      "6．其他 \n",
      "\n",
      "（五）专项储备 \n",
      "\n",
      "1．本期提取 \n",
      "\n",
      "2．本期使用 \n",
      "\n",
      "（六）其他 \n",
      "\n",
      "四、本期期末余额 \n",
      "\n",
      "593,718,564.00 \n",
      "\n",
      "711,563,601.17 \n",
      "\n",
      "7,175,342.00 \n",
      "\n",
      "-29,978,768.21 \n",
      "\n",
      "77,055,572.05 \n",
      "\n",
      "887,446,842.07 \n",
      "\n",
      "2,232,630,469.08 \n",
      "\n",
      "4,048,572.14 \n",
      "\n",
      "2,236,679,041.22 \n",
      "\n",
      "上期金额 \n",
      "\n",
      "单位：元 \n",
      "\n",
      "2021 年度 \n",
      "\n",
      "归属于母公司所有者权益 \n",
      "\n",
      "项目 \n",
      "\n",
      "股本 \n",
      "\n",
      "其他权益工具 \n",
      "\n",
      "优\n",
      "先\n",
      "股 \n",
      "\n",
      "永\n",
      "续\n",
      "债 \n",
      "\n",
      "其\n",
      "他 \n",
      "\n",
      "资本公\n",
      "积 \n",
      "\n",
      "减：库\n",
      "存股 \n",
      "\n",
      "其他综合\n",
      "收益 \n",
      "\n",
      "专项\n",
      "储备 \n",
      "\n",
      "盈余公\n",
      "积 \n",
      "\n",
      "一般\n",
      "风险\n",
      "准备 \n",
      "\n",
      "未分配利\n",
      "润 \n",
      "\n",
      "其\n",
      "他 \n",
      "\n",
      "小计 \n",
      "\n",
      "少数股东\n",
      "权益 \n",
      "\n",
      "所有者权益\n",
      "合计 \n",
      "\n",
      "108 \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      "一、上年期末余额 \n",
      "\n",
      "596,193,648.00 \n",
      "\n",
      "757,216,963.24 \n",
      "\n",
      "59,471,668.49 \n",
      "\n",
      "68,442,497.49 \n",
      "\n",
      "783,341,390.04 \n",
      "\n",
      "2,145,722,830.28 \n",
      "\n",
      "-317,060.52 \n",
      "\n",
      "2,145,405,769.76 \n",
      "\n",
      "北京佳讯飞鸿电气股份有限公司 2022 年年度报告全文 \n",
      "\n",
      "更 \n",
      "\n",
      "正 \n",
      "\n",
      "加：会计政策变\n",
      "\n",
      "前期差错更\n",
      "\n",
      "同一控制下\n",
      "\n",
      "企业合并 \n",
      "\n",
      "其他 \n",
      "\n",
      "二、本年期初余额 \n",
      "\n",
      "596,193,648.00 \n",
      "\n",
      "757,216,963.24 \n",
      "\n",
      "59,471,668.49 \n",
      "\n",
      "68,442,497.49 \n",
      "\n",
      "783,341,390.04 \n",
      "\n",
      "2,145,722,830.28 \n",
      "\n",
      "-317,060.52 \n",
      "\n",
      "2,145,405,769.76 \n",
      "\n",
      "三、本期增减变动金\n",
      "额（减少以“－”号填\n",
      "列） \n",
      "\n",
      "（一）综合收益总额 \n",
      "\n",
      "（二）所有者投入和\n",
      "减少资本 \n",
      "\n",
      "1．所有者投入的普通\n",
      "股 \n",
      "\n",
      "2．其他权益工具持有\n",
      "者投入资本 \n",
      "\n",
      "3．股份支付计入所有\n",
      "者权益的金额 \n",
      "\n",
      "4．其他 \n",
      "\n",
      "（三）利润分配 \n",
      "\n",
      "1．提取盈余公积 \n",
      "\n",
      "2．提取一般风险准备 \n",
      "\n",
      "3．对所有者（或股\n",
      "东）的分配 \n",
      "\n",
      "4．其他 \n",
      "\n",
      "（四）所有者权益内\n",
      "部结转 \n",
      "\n",
      "1．资本公积转增资本\n",
      "（或股本） \n",
      "\n",
      "-2,475,084.00 \n",
      "\n",
      "-5,970,286.38 \n",
      "\n",
      "22,673,605.66 \n",
      "\n",
      "-26,873,547.89 \n",
      "\n",
      "5,222,105.35 \n",
      "\n",
      "83,765,392.36 \n",
      "\n",
      "30,994,973.78 \n",
      "\n",
      "4,714,878.97 \n",
      "\n",
      "35,709,852.75 \n",
      "\n",
      "-2,475,084.00 \n",
      "\n",
      "-5,970,286.38 \n",
      "\n",
      "22,673,605.66 \n",
      "\n",
      "-31,118,976.04 \n",
      "\n",
      "4,437,305.50 \n",
      "\n",
      "-26,681,670.54 \n",
      "\n",
      "-26,873,547.89 \n",
      "\n",
      "117,953,476.06 \n",
      "\n",
      "91,079,928.17 \n",
      "\n",
      "277,573.47 \n",
      "\n",
      "91,357,501.64 \n",
      "\n",
      "-2,475,084.00 \n",
      "\n",
      "-5,333,764.88 \n",
      "\n",
      "-7,672,760.40 \n",
      "\n",
      "-636,521.50 \n",
      "\n",
      "30,346,366.06 \n",
      "\n",
      "5,222,105.35 \n",
      "\n",
      "5,222,105.35 \n",
      "\n",
      "-34,188,083.70 \n",
      "\n",
      "-5,222,105.35 \n",
      "\n",
      "3,800,784.00 \n",
      "\n",
      "3,800,784.00 \n",
      "\n",
      "-136,088.48 \n",
      "\n",
      "-136,088.48 \n",
      "\n",
      "-30,982,887.56 \n",
      "\n",
      "636,521.50 \n",
      "\n",
      "-30,346,366.06 \n",
      "\n",
      "-28,965,978.35 \n",
      "\n",
      "-28,965,978.35 \n",
      "\n",
      "-28,965,978.35 \n",
      "\n",
      "-28,965,978.35 \n",
      "\n",
      "-28,965,978.35 \n",
      "\n",
      "109 \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      "北京佳讯飞鸿电气股份有限公司 2022 年年度报告全文 \n",
      "\n",
      "2．盈余公积转增资本\n",
      "（或股本） \n",
      "\n",
      "3．盈余公积弥补亏损 \n",
      "\n",
      "4．设定受益计划变动\n",
      "额结转留存收益 \n",
      "\n",
      "5．其他综合收益结转\n",
      "留存收益 \n",
      "\n",
      "6．其他 \n",
      "\n",
      "（五）专项储备 \n",
      "\n",
      "1．本期提取 \n",
      "\n",
      "2．本期使用 \n",
      "\n",
      "（六）其他 \n",
      "\n",
      "四、本期期末余额 \n",
      "\n",
      "593,718,564.00 \n",
      "\n",
      "751,246,676.86 \n",
      "\n",
      "82,145,274.15 \n",
      "\n",
      "-26,873,547.89 \n",
      "\n",
      "73,664,602.84 \n",
      "\n",
      "867,106,782.40 \n",
      "\n",
      "2,176,717,804.06 \n",
      "\n",
      "4,397,818.45 \n",
      "\n",
      "2,181,115,622.51 \n",
      "\n",
      "8、母公司所有者权益变动表 \n",
      "\n",
      "本期金额 \n",
      "\n",
      "项目 \n",
      "\n",
      "股本 \n",
      "\n",
      "其他权益工具 \n",
      "\n",
      "优先\n",
      "股 \n",
      "\n",
      "永续\n",
      "债 \n",
      "\n",
      "其\n",
      "他 \n",
      "\n",
      "资本公\n",
      "积 \n",
      "\n",
      "减：库存\n",
      "股 \n",
      "\n",
      "其他综合收\n",
      "益 \n",
      "\n",
      "专项储\n",
      "备 \n",
      "\n",
      "盈余公\n",
      "积 \n",
      "\n",
      "未分配利\n",
      "润 \n",
      "\n",
      "其\n",
      "他 \n",
      "\n",
      "所有者权益合\n",
      "计 \n",
      "\n",
      "一、上年期末余额 \n",
      "\n",
      "593,718,564.00 \n",
      "\n",
      "889,489,082.19 \n",
      "\n",
      "82,145,274.15 \n",
      "\n",
      "-24,726,392.21 \n",
      "\n",
      "73,664,602.84 \n",
      "\n",
      "450,716,884.47 \n",
      "\n",
      "1,900,717,467.14 \n",
      "\n",
      "2022 年度 \n",
      "\n",
      "单位：元 \n",
      "\n",
      "加：会计政策变更 \n",
      "\n",
      "前期差错更正 \n",
      "\n",
      "其他 \n",
      "\n",
      "二、本年期初余额 \n",
      "\n",
      "593,718,564.00 \n",
      "\n",
      "889,489,082.19 \n",
      "\n",
      "82,145,274.15 \n",
      "\n",
      "-24,726,392.21 \n",
      "\n",
      "73,664,602.84 \n",
      "\n",
      "450,716,884.47 \n",
      "\n",
      "1,900,717,467.14 \n",
      "\n",
      "三、本期增减变动金额（减少以“－”\n",
      "号填列） \n",
      "\n",
      "（一）综合收益总额 \n",
      "\n",
      "-46,374,212.67 \n",
      "\n",
      "-74,969,932.15 \n",
      "\n",
      "-2,687,193.48 \n",
      "\n",
      "3,390,969.21 \n",
      "\n",
      "1,428,990.32 \n",
      "\n",
      "6,810,315.37 \n",
      "\n",
      "43,407,200.93 \n",
      "\n",
      "30,728,485.53 \n",
      "\n",
      "50,217,516.30 \n",
      "\n",
      "110 \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      "（二）所有者投入和减少资本 \n",
      "\n",
      "1．所有者投入的普通股 \n",
      "\n",
      "2．其他权益工具持有者投入资本 \n",
      "\n",
      "3．股份支付计入所有者权益的金额 \n",
      "\n",
      "4．其他 \n",
      "\n",
      "（三）利润分配 \n",
      "\n",
      "1．提取盈余公积 \n",
      "\n",
      "2．对所有者（或股东）的分配 \n",
      "\n",
      "3．其他 \n",
      "\n",
      "（四）所有者权益内部结转 \n",
      "\n",
      "1．资本公积转增资本（或股本） \n",
      "\n",
      "2．盈余公积转增资本（或股本） \n",
      "\n",
      "3．盈余公积弥补亏损 \n",
      "\n",
      "4．设定受益计划变动额结转留存收益 \n",
      "\n",
      "5．其他综合收益结转留存收益 \n",
      "\n",
      "6．其他 \n",
      "\n",
      "（五）专项储备 \n",
      "\n",
      "1．本期提取 \n",
      "\n",
      "2．本期使用 \n",
      "\n",
      "（六）其他 \n",
      "\n",
      "北京佳讯飞鸿电气股份有限公司 2022 年年度报告全文 \n",
      "\n",
      "7,175,342.00 \n",
      "\n",
      "7,175,342.00 \n",
      "\n",
      "4,340,720.09 \n",
      "\n",
      "-33,430,452.64 \n",
      "\n",
      "-36,265,074.55 \n",
      "\n",
      "4,340,720.09 \n",
      "\n",
      "-4,340,720.09 \n",
      "\n",
      "-29,089,732.55 \n",
      "\n",
      "-36,265,074.55 \n",
      "\n",
      "-46,374,212.67 \n",
      "\n",
      "-82,145,274.15 \n",
      "\n",
      "-9,497,508.85 \n",
      "\n",
      "-949,750.88 \n",
      "\n",
      "-8,547,757.97 \n",
      "\n",
      "16,776,043.78 \n",
      "\n",
      "-46,374,212.67 \n",
      "\n",
      "-82,145,274.15 \n",
      "\n",
      "-9,497,508.85 \n",
      "\n",
      "-949,750.88 \n",
      "\n",
      "-8,547,757.97 \n",
      "\n",
      "-18,995,017.70 \n",
      "\n",
      "35,771,061.48 \n",
      "\n",
      "四、本期期末余额 \n",
      "\n",
      "593,718,564.00 \n",
      "\n",
      "843,114,869.52 \n",
      "\n",
      "7,175,342.00 \n",
      "\n",
      "-27,413,585.69 \n",
      "\n",
      "77,055,572.05 \n",
      "\n",
      "452,145,874.79 \n",
      "\n",
      "1,931,445,952.67 \n",
      "\n",
      "上期金额 \n",
      "\n",
      "项目 \n",
      "\n",
      "一、上年期\n",
      "末余额 \n",
      "\n",
      "加：会\n",
      "\n",
      "股本 \n",
      "\n",
      "596,193,648.00 \n",
      "\n",
      "其他权益工具 \n",
      "\n",
      "优先股 \n",
      "\n",
      "永续债 \n",
      "\n",
      "其他 \n",
      "\n",
      "资本公积 \n",
      "\n",
      "减：库存\n",
      "股 \n",
      "\n",
      "其他综合\n",
      "收益 \n",
      "\n",
      "专项储备  盈余公积 \n",
      "\n",
      "未分配利\n",
      "润 \n",
      "\n",
      "其他 \n",
      "\n",
      "所有者权\n",
      "益合计 \n",
      "\n",
      "2021 年度 \n",
      "\n",
      "894,822,847.07 \n",
      "\n",
      "59,471,668.49 \n",
      "\n",
      "68,442,497.49 \n",
      "\n",
      "432,683,914.69 \n",
      "\n",
      "1,932,671,238.76 \n",
      "\n",
      "单位：元 \n",
      "\n",
      "111 \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      "计政策变更 \n",
      "\n",
      "前\n",
      "期差错更正 \n",
      "\n",
      "其\n",
      "\n",
      "他 \n",
      "\n",
      "二、本年期\n",
      "初余额 \n",
      "\n",
      "三、本期增\n",
      "减变动金额\n",
      "（减少以\n",
      "“－”号填\n",
      "列） \n",
      "\n",
      "（一）综合\n",
      "收益总额 \n",
      "\n",
      "（二）所有\n",
      "者投入和减\n",
      "少资本 \n",
      "\n",
      "1．所有者\n",
      "投入的普通\n",
      "股 \n",
      "\n",
      "2．其他权\n",
      "益工具持有\n",
      "者投入资本 \n",
      "\n",
      "3．股份支\n",
      "付计入所有\n",
      "者权益的金\n",
      "额 \n",
      "\n",
      "4．其他 \n",
      "\n",
      "（三）利润\n",
      "分配 \n",
      "\n",
      "1．提取盈\n",
      "余公积 \n",
      "\n",
      "2．对所有\n",
      "者（或股\n",
      "\n",
      "北京佳讯飞鸿电气股份有限公司 2022 年年度报告全文 \n",
      "\n",
      "596,193,648.00 \n",
      "\n",
      "-2,475,084.00 \n",
      "\n",
      "894,822,847.07 \n",
      "\n",
      "59,471,668.49 \n",
      "\n",
      "68,442,497.49 \n",
      "\n",
      "432,683,914.69 \n",
      "\n",
      "1,932,671,238.76 \n",
      "\n",
      "-5,333,764.88 \n",
      "\n",
      "22,673,605.66 \n",
      "\n",
      "-24,726,392.21 \n",
      "\n",
      "5,222,105.35 \n",
      "\n",
      "18,032,969.78 \n",
      "\n",
      "-31,953,771.62 \n",
      "\n",
      "-2,475,084.00 \n",
      "\n",
      "-5,333,764.88 \n",
      "\n",
      "22,673,605.66 \n",
      "\n",
      "-30,482,454.54 \n",
      "\n",
      "-24,726,392.21 \n",
      "\n",
      "52,221,053.48 \n",
      "\n",
      "27,494,661.27 \n",
      "\n",
      "-2,475,084.00 \n",
      "\n",
      "-5,333,764.88 \n",
      "\n",
      "-7,672,760.40 \n",
      "\n",
      "30,346,366.06 \n",
      "\n",
      "112 \n",
      "\n",
      "-136,088.48 \n",
      "\n",
      "-30,346,366.06 \n",
      "\n",
      "-28,965,978.35 \n",
      "\n",
      "5,222,105.35 \n",
      "\n",
      "-34,188,083.70 \n",
      "\n",
      "5,222,105.35 \n",
      "\n",
      "-5,222,105.35 \n",
      "\n",
      "-28,965,978.35 \n",
      "\n",
      "-28,965,978.35 \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      "东）的分配 \n",
      "\n",
      "3．其他 \n",
      "\n",
      "（四）所有\n",
      "者权益内部\n",
      "结转 \n",
      "\n",
      "1．资本公\n",
      "积转增资本\n",
      "（或股本） \n",
      "\n",
      "2．盈余公\n",
      "积转增资本\n",
      "（或股本） \n",
      "\n",
      "3．盈余公\n",
      "积弥补亏损 \n",
      "\n",
      "4．设定受\n",
      "益计划变动\n",
      "额结转留存\n",
      "收益 \n",
      "\n",
      "5．其他综\n",
      "合收益结转\n",
      "留存收益 \n",
      "\n",
      "6．其他 \n",
      "\n",
      "（五）专项\n",
      "储备 \n",
      "\n",
      "1．本期提\n",
      "取 \n",
      "\n",
      "2．本期使\n",
      "用 \n",
      "\n",
      "（六）其他 \n",
      "\n",
      "四、本期期\n",
      "末余额 \n",
      "\n",
      "北京佳讯飞鸿电气股份有限公司 2022 年年度报告全文 \n",
      "\n",
      "593,718,564.00 \n",
      "\n",
      "889,489,082.19 \n",
      "\n",
      "82,145,274.15 \n",
      "\n",
      "-24,726,392.21 \n",
      "\n",
      "73,664,602.84 \n",
      "\n",
      "450,716,884.47 \n",
      "\n",
      "1,900,717,467.14 \n",
      "\n",
      "113 \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n",
      " \n",
      "\n"
     ]
    }
   ],
   "source": [
    "for page_layout in extract_pages(file):\n",
    "    for element in page_layout:\n",
    "        if isinstance(element, LTTextContainer):\n",
    "            print(element.get_text())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "提取PDF中最多使用的字体大小，就认为是正文字体"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 55.200,786.120,539.980,786.840>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,116.540,57.600,117.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,116.540,57.600,117.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 57.600,116.540,118.344,117.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 118.340,116.540,119.300,117.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 119.300,116.540,329.710,117.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 329.710,116.540,330.670,117.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 330.670,116.540,537.570,117.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,116.540,538.540,117.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,116.540,538.540,117.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,104.760,57.600,116.544>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,103.800,57.600,104.760>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,103.800,57.600,104.760>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 57.600,103.800,118.344,104.760>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 118.340,104.760,119.300,116.544>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 118.340,103.800,119.300,104.760>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 119.300,103.800,329.710,104.760>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 329.710,104.760,330.670,116.544>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 329.710,103.800,330.670,104.760>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 330.670,103.800,537.570,104.760>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,104.760,538.540,116.544>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,103.800,538.540,104.760>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,103.800,538.540,104.760>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 55.200,786.120,539.980,786.840>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,698.860,57.600,770.044>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 118.340,698.860,119.300,770.044>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 329.710,698.860,330.670,770.044>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,698.860,538.540,770.044>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,697.900,57.600,698.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 57.600,697.900,118.344,698.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 118.340,697.900,119.300,698.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 119.300,697.900,329.710,698.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 329.710,697.900,330.670,698.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 330.670,697.900,537.570,698.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,697.900,538.540,698.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,608.500,57.600,697.900>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,607.540,57.600,608.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,607.540,57.600,608.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 57.600,607.540,118.344,608.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 118.340,608.500,119.300,697.900>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 118.340,607.540,119.300,608.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 119.300,607.540,329.710,608.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 329.710,608.500,330.670,697.900>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 329.710,607.540,330.670,608.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 330.670,607.540,537.570,608.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,608.500,538.540,697.900>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,607.540,538.540,608.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,607.540,538.540,608.500>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,332.930,57.600,333.890>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,332.930,57.600,333.890>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 57.600,332.930,120.984,333.890>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 120.980,332.930,121.940,333.890>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 121.940,332.930,319.750,333.890>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 319.750,332.930,320.710,333.890>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 320.710,332.930,537.570,333.890>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,332.930,538.540,333.890>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,332.930,538.540,333.890>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,302.930,57.600,332.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 120.980,302.930,121.940,332.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 319.750,302.930,320.710,332.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,302.930,538.540,332.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,301.970,57.600,302.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 57.600,301.970,120.984,302.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 120.980,301.970,121.940,302.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 121.940,301.970,319.750,302.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 319.750,301.970,320.710,302.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 320.710,301.970,537.570,302.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,301.970,538.540,302.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,247.940,57.600,301.964>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 120.980,247.940,121.940,301.964>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 319.750,247.940,320.710,301.964>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,247.940,538.540,301.964>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,246.980,57.600,247.940>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 57.600,246.980,120.984,247.940>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 120.980,246.980,121.940,247.940>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 121.940,246.980,319.750,247.940>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 319.750,246.980,320.710,247.940>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 320.710,246.980,537.570,247.940>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,246.980,538.540,247.940>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,180.860,57.600,246.980>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,179.900,57.600,180.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,179.900,57.600,180.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 57.600,179.900,120.984,180.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 120.980,180.860,121.940,246.980>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 120.980,179.900,121.940,180.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 121.940,179.900,319.750,180.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 319.750,180.860,320.710,246.980>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 319.750,179.900,320.710,180.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 320.710,179.900,537.570,180.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,180.860,538.540,246.980>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,179.900,538.540,180.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 537.580,179.900,538.540,180.860>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 55.200,786.120,539.980,786.840>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,384.050,57.600,385.010>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,384.050,57.600,385.010>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 57.600,384.050,139.104,385.010>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 139.100,384.050,140.060,385.010>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 140.060,384.050,252.280,385.010>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 252.290,384.050,253.250,385.010>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 253.250,384.050,499.900,385.010>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 499.900,384.050,500.860,385.010>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 499.900,384.050,500.860,385.010>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,372.290,57.600,384.050>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 139.100,372.290,140.060,384.050>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 252.290,372.290,253.250,384.050>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 499.900,372.290,500.860,384.050>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,371.330,57.600,372.290>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 57.600,371.330,139.104,372.290>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 139.100,371.330,140.060,372.290>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 140.060,371.330,252.280,372.290>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 252.290,371.330,253.250,372.290>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 253.250,371.330,499.900,372.290>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 499.900,371.330,500.860,372.290>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,347.930,57.600,371.330>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 139.100,347.930,140.060,371.330>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 252.290,347.930,253.250,371.330>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 499.900,347.930,500.860,371.330>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,346.970,57.600,347.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 57.600,346.970,139.104,347.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 139.100,346.970,140.060,347.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 140.060,346.970,252.280,347.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 252.290,346.970,253.250,347.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 253.250,346.970,499.900,347.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 499.900,346.970,500.860,347.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,311.930,57.600,346.970>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,310.970,57.600,311.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 56.640,310.970,57.600,311.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 57.600,310.970,139.104,311.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 139.100,311.930,140.060,346.970>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 139.100,310.970,140.060,311.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 140.060,310.970,252.280,311.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 252.290,311.930,253.250,346.970>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 252.290,310.970,253.250,311.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 253.250,310.970,499.900,311.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 499.900,311.930,500.860,346.970>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 499.900,310.970,500.860,311.930>\n",
      "Not LTTextContainer, element: type: <class 'pdfminer.layout.LTRect'>, element: <LTRect 499.900,310.970,500.860,311.930>\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最常出现的字体大小是: 11.04\n"
     ]
    }
   ],
   "source": [
    "from pdfminer.high_level import extract_pages\n",
    "from pdfminer.layout import LTTextContainer, LTChar\n",
    "from collections import Counter\n",
    "import math\n",
    "\n",
    "def get_most_common_font_size(pdf_file: str)->float:\n",
    "    \"\"\"\n",
    "    获取 PDF 文件中字体大小的众数, 就认为是正文字体\n",
    "    :param pdf_file: PDF 文件路径\n",
    "    :return: 字体大小的float\n",
    "    \"\"\"\n",
    "    font_sizes = Counter()\n",
    "    \n",
    "    # 提取页面\n",
    "    for page_layout in extract_pages(pdf_file):\n",
    "        # 遍历页面中的所有对象\n",
    "        for element in page_layout:\n",
    "            # 如果是文本容器，则继续分析\n",
    "            if isinstance(element, LTTextContainer):\n",
    "                # 遍历文本容器中的字符\n",
    "                if isinstance(element, LTTextBox):\n",
    "                    for text_line in element:\n",
    "                        for character in text_line:\n",
    "                            # 如果是字符，则获取其字体大小\n",
    "                            if isinstance(character, LTChar):\n",
    "                                font_size = round(character.size, 3)\n",
    "                                font_sizes[font_size] += 1\n",
    "                elif isinstance(element, LTTextLine):\n",
    "                    for character in text_line:\n",
    "                        # 如果是字符，则获取其字体大小\n",
    "                        if isinstance(character, LTChar):\n",
    "                            font_size = round(character.size, 3)\n",
    "                            font_sizes[font_size] += 1\n",
    "                else:\n",
    "                    print(f\"element: type: {type(element)}, element: {element}\")\n",
    "            else:\n",
    "                print(f\"Not LTTextContainer, element: type: {type(element)}, element: {element}\")\n",
    "\n",
    "    # 找到出现次数最多的字体大小\n",
    "    most_common_font_size = font_sizes.most_common(1)[0][0]\n",
    "    return most_common_font_size\n",
    "\n",
    "# 使用函数\n",
    "pdf_file_path = '../佳讯飞鸿：2022年年度报告/佳讯飞鸿：2022年年度报告_125-127.pdf'  # 替换为您的 PDF 文件路径\n",
    "most_common_size = get_most_common_font_size(pdf_file_path)\n",
    "print(f\"最常出现的字体大小是: {most_common_size}\")\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
